/*
 * The Selling Partner API for Sellers
 * The [Selling Partner API for Sellers](https://developer-docs.amazon.com/sp-api/docs/sellers-api-v1-reference) (Sellers API) provides essential information about seller accounts, such as:  - The marketplaces a seller can list in - The default language and currency of a marketplace - Whether the seller has suspended listings  Refer to the [Sellers API reference](https://developer-docs.amazon.com/sp-api/docs/sellers-api-v1-reference) for details about this API's operations, data types, and schemas.
 *
 * OpenAPI spec version: v1
 *
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */

package software.amazon.spapi.models.sellers.v1;

import com.google.gson.annotations.SerializedName;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.Objects;

/**
 * Information about the seller&#x27;s business. Certain fields may be omitted depending on the seller&#x27;s
 * &#x60;businessType&#x60;.
 */
@Schema(
        description =
                "Information about the seller's business. Certain fields may be omitted depending on the seller's `businessType`.")
public class Business {
    @SerializedName("name")
    private String name = null;

    @SerializedName("registeredBusinessAddress")
    private Address registeredBusinessAddress = null;

    @SerializedName("companyRegistrationNumber")
    private String companyRegistrationNumber = null;

    @SerializedName("companyTaxIdentificationNumber")
    private String companyTaxIdentificationNumber = null;

    @SerializedName("nonLatinName")
    private String nonLatinName = null;

    public Business name(String name) {
        this.name = name;
        return this;
    }

    /**
     * The registered business name.
     *
     * @return name
     */
    @Schema(required = true, description = "The registered business name.")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Business registeredBusinessAddress(Address registeredBusinessAddress) {
        this.registeredBusinessAddress = registeredBusinessAddress;
        return this;
    }

    /**
     * Get registeredBusinessAddress
     *
     * @return registeredBusinessAddress
     */
    @Schema(required = true, description = "")
    public Address getRegisteredBusinessAddress() {
        return registeredBusinessAddress;
    }

    public void setRegisteredBusinessAddress(Address registeredBusinessAddress) {
        this.registeredBusinessAddress = registeredBusinessAddress;
    }

    public Business companyRegistrationNumber(String companyRegistrationNumber) {
        this.companyRegistrationNumber = companyRegistrationNumber;
        return this;
    }

    /**
     * The seller&#x27;s company registration number, if applicable. This field will be absent for individual sellers
     * and sole proprietorships.
     *
     * @return companyRegistrationNumber
     */
    @Schema(
            description =
                    "The seller's company registration number, if applicable. This field will be absent for individual sellers and sole proprietorships.")
    public String getCompanyRegistrationNumber() {
        return companyRegistrationNumber;
    }

    public void setCompanyRegistrationNumber(String companyRegistrationNumber) {
        this.companyRegistrationNumber = companyRegistrationNumber;
    }

    public Business companyTaxIdentificationNumber(String companyTaxIdentificationNumber) {
        this.companyTaxIdentificationNumber = companyTaxIdentificationNumber;
        return this;
    }

    /**
     * The seller&#x27;s company tax identification number, if applicable. This field will be present for certain
     * business types only, such as sole proprietorships.
     *
     * @return companyTaxIdentificationNumber
     */
    @Schema(
            description =
                    "The seller's company tax identification number, if applicable. This field will be present for certain business types only, such as sole proprietorships.")
    public String getCompanyTaxIdentificationNumber() {
        return companyTaxIdentificationNumber;
    }

    public void setCompanyTaxIdentificationNumber(String companyTaxIdentificationNumber) {
        this.companyTaxIdentificationNumber = companyTaxIdentificationNumber;
    }

    public Business nonLatinName(String nonLatinName) {
        this.nonLatinName = nonLatinName;
        return this;
    }

    /**
     * The non-Latin script version of the registered business name, if applicable.
     *
     * @return nonLatinName
     */
    @Schema(description = "The non-Latin script version of the registered business name, if applicable.")
    public String getNonLatinName() {
        return nonLatinName;
    }

    public void setNonLatinName(String nonLatinName) {
        this.nonLatinName = nonLatinName;
    }

    @Override
    public boolean equals(java.lang.Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        Business business = (Business) o;
        return Objects.equals(this.name, business.name)
                && Objects.equals(this.registeredBusinessAddress, business.registeredBusinessAddress)
                && Objects.equals(this.companyRegistrationNumber, business.companyRegistrationNumber)
                && Objects.equals(this.companyTaxIdentificationNumber, business.companyTaxIdentificationNumber)
                && Objects.equals(this.nonLatinName, business.nonLatinName);
    }

    @Override
    public int hashCode() {
        return Objects.hash(
                name,
                registeredBusinessAddress,
                companyRegistrationNumber,
                companyTaxIdentificationNumber,
                nonLatinName);
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("class Business {\n");

        sb.append("    name: ").append(toIndentedString(name)).append("\n");
        sb.append("    registeredBusinessAddress: ")
                .append(toIndentedString(registeredBusinessAddress))
                .append("\n");
        sb.append("    companyRegistrationNumber: ")
                .append(toIndentedString(companyRegistrationNumber))
                .append("\n");
        sb.append("    companyTaxIdentificationNumber: ")
                .append(toIndentedString(companyTaxIdentificationNumber))
                .append("\n");
        sb.append("    nonLatinName: ").append(toIndentedString(nonLatinName)).append("\n");
        sb.append("}");
        return sb.toString();
    }

    /** Convert the given object to string with each line indented by 4 spaces (except the first line). */
    private String toIndentedString(java.lang.Object o) {
        if (o == null) {
            return "null";
        }
        return o.toString().replace("\n", "\n    ");
    }
}
